home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / wwindow2.arc / INT10.ASM next >
Assembly Source File  |  1986-08-01  |  2KB  |  89 lines

  1. PAGE 55,79
  2. TITLE Copyright 1986 Nourse Gregg & Browne, Inc.
  3. SUBTTL INT10 - Lattice C interface to PC Video BIOS
  4. ;
  5. ; Interface for:
  6. ;
  7. ;          Lattice C
  8. ;            to
  9. ;    the IBM BIOS video interupt
  10. ;
  11. ;-----------------------------------------*
  12. ;
  13. ;    Call from your Lattice C looks like:
  14. ;
  15. ;
  16. ;    union REGS regs;
  17. ;
  18. ;
  19. ;    int10(®s);
  20. ;
  21. ;
  22. ;------------------------------------------*
  23. ;
  24. ; This interface is for the Lattice Small ONLY
  25. ;
  26. ;  the ES register is loaded with a copy of
  27. ;    the DS register so you don't use SEGREGS.
  28. ;
  29. ;
  30. ;------------------------------------------*
  31. ;
  32. PAGE
  33.     INCLUDE    \LC3\SM8086.MAC
  34.  
  35. XREG    STRUC
  36. AX1    DW    ?
  37. BX1    DW    ?
  38. CX1    DW    ?
  39. DX1    DW    ?
  40. SI1    DW    ?
  41. DI1    DW    ?
  42. XREG    ENDS
  43.  
  44.     NAME    INT10
  45.     SETX
  46.     PSEG
  47.     DB    '  Copyright 1986, Nourse Gregg + Browne, Inc.  '
  48.     BEGIN   INT10
  49.     PUSH    BP        ;SAVE BP
  50.     MOV    BP,SP        ;ADDRESS THE STACK FRAME
  51.     PUSH    ES        ;SAVE ES
  52. ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  53. ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  54.  
  55.     MOV    SI,[BP+X]    ;INREGS STRUC POINTER
  56.     MOV    AX,DS        ;GET DATA SEG ADDRESS
  57.     MOV    ES,AX        ;PUT DS VALUE IN ES
  58.     MOV    AX,[SI].AX1    ;LOAD AX FROM INREGS
  59.     MOV    BX,[SI].BX1    ;LOAD BX FROM INREGS
  60.     MOV    CX,[SI].CX1    ;LOAD CX FROM INREGS
  61.     MOV    DX,[SI].DX1    ;LOAD DX FROM INREGS
  62.     MOV    DI,[SI].DI1    ;LOAD DI FROM INREGS
  63.     MOV    SI,[SI].SI1    ;LOAD SI FROM INREGS
  64.     PUSH    BP        ;SAVE BP
  65. ;    CLI            ;DISABLE INTERUPTS !?!?!?!?!?!
  66.     INT    10H        ;INT TO BIOS VIDEO INTERUPT
  67. ;    STI            ;ENABLE INTERUPTS ....
  68.     POP    BP        ;RESTORE BP
  69.     PUSH    SI        ;SAVE SI
  70.     MOV    SI,[BP+X]    ;INREGS STRUC POINTER
  71.     MOV    [SI].AX1,AX    ;PUT AX IN INREGS
  72.     MOV    [SI].BX1,BX    ;PUT BX IN INREGS
  73.     MOV    [SI].CX1,CX    ;PUT CX IN INREGS
  74.     MOV    [SI].DX1,DX    ;PUT DX IN INREGS
  75.     MOV    [SI].DI1,DI    ;PUT DI IN INREGS
  76.     POP    AX        ;GET SI VALUE IN AX
  77.     MOV    [SI].SI1,AX    ;PUT SI IN INREGS
  78.  
  79. ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  80. ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  81.     POP    ES        ;RESTORE ES
  82.     POP    BP        ;RESTORE BP
  83.     RET
  84.  
  85. INT10    ENDP
  86.     ENDPS
  87.     END INT10
  88.  
  89.